package util;

import java.awt.AWTEvent;
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.Toolkit;

import javax.swing.JFrame;

import AccionBoton.AccionClickRaton;

public class BarridoColumna extends Barrido {
	
	private int _fila;
	private int _columnaInicial;
	private int _columnaActual;
	
	public BarridoColumna(Teclado teclado, JFrame frame, int mitad, int fila, int numColumnasBarrido, int tiempo){
		super(teclado, frame, mitad, numColumnasBarrido, tiempo);
		_fila = fila;
		if(_mitad==0) _columnaInicial = 0;
		else _columnaInicial = _numColumnas - _numColumnasBarrido;
		_columnaActual = _columnaInicial;
		this.barrer();
	}
	
	public void barrer(){
		if (_numColumnasBarrido==1) salir = true;
		else  salir = false;
		Robot r = null;
		try {
			r = new Robot();
		} catch (AWTException e) {
			e.printStackTrace();
		}   
		_frame.setContentPane(_teclado);
		_teclado.refrescar();
		Toolkit t = Toolkit.getDefaultToolkit();
		t.addAWTEventListener(new AccionClickRaton(this), AWTEvent.MOUSE_EVENT_MASK);
		
		_columnaActual = _columnaInicial;
		
		//El atributo posicionValida evita que esperemos un segundo en la segunda posicion de botones que ocupan dos columnas. 
		//Solo nos detenemos en la primera posicion, que es la importante para colorear.
		boolean posicionValida;
		
		while(!salir){
			despintarTeclado();
			posicionValida = pintarPosicion(_fila,_columnaActual);
			_teclado.refrescar();
			if(posicionValida) r.delay(_tiempo);
			if(salir) break;
			if (_columnaActual < _columnaInicial + _numColumnasBarrido - 1) _columnaActual++;
			else _columnaActual = _columnaInicial;
		}
		despintarTeclado();
		if (_retroceso) _teclado.setEstado(new BarridoFila(_teclado,_frame,_mitad,_numColumnasBarrido, _tiempo));
		else{ 
			_teclado.activarBoton(_fila, _columnaActual);
			_teclado.clickBoton(_fila, _columnaActual);
			_teclado.desactivarBoton(_fila, _columnaActual);
			_teclado.setEstado(new BarridoMitad(_teclado, _frame, _tiempo));
		}
		
	}
	
	private boolean pintarPosicion(int i, int j){
		return _teclado.pintarBotonPosicion(i, j);
	}
	
}
